<?
class ListaUsuarios implements IIterador{

	/**
	 * Almacena el resultado de la búsqueda de Usuario.
	 * 
	 * @see buscar()
	 * @var unknown_type
	 */
	private $result;

	/**
	 * Almacena el número de resultados obtenidos, independientemente de
	 * la cláusula LIMIT.
	 * @var integer
	 */
	private $num_rows=0;
	
	/**
	 * Objeto de conexión a la BBDD.
	 * @var MySQL
	 */
	private $MySQL;
	
	/**
	 * Constructor.
	 * Inicializa la conexión a la BBDD.
	 */
	public function __construct(){
		$this->MySQL = new MySQL('MYLIED');
	}
	
	/**
	 * Devuelve el número de Usuario almacenado en la búsqueda.
	 * 
	 * Si no se ha lanzado previamente una búsqueda, el valor devuelto será NULL.
	 * 
	 * @see buscar()
	 * @return integer $num_resultados Número de Usuario encontrados en buscar()
	 */
	public function num_Resultados(){
		return $this->num_rows;
	}

	/**
	 * Devuelve el puntero al inicio de la lista de Usuario.
	 */
	public function inicio(){
		mysql_data_seek($this->result, 0);
	}

	/**
	 * Devuelve el siguiente Usuario en la lista y avanza el puntero.
	 * 
	 * Devuelve NULL si ya se ha llegado al último elemento.
	 * 
	 * @return Usuario $Usuario El siguiente usuario en la lista.
	 */
	public function siguiente(){
		if($row = @mysql_fetch_row($this->result))
			$id = $row[0];
		else
			return null;
			
		return new Usuario($id);
	}

	/**
	 * Lanza la búsqueda de Usuario aplicando los filtros pasados como parámetro.
	 * 
	 * La variable local $result es actualizada con el resultado de la búsqueda.
	 * 
	 * @param array $filtros Lista de filtros a aplicar a la búsqueda de Usuario.
	 */
	public function buscar($filtros = array()){
		
		$Validar = new Validar();
		$filtro = "";
		
		if(isset($filtros['id']))
			$filtro .= " AND usuarios.id = '".$filtros['id']."' ";
			
		$query = "SELECT SQL_CALC_FOUND_ROWS usuarios.id 
				FROM usuarios
				WHERE 1 
					$filtro
				GROUP BY usuarios.id
				$order
				$limit; ";
				
		$this->result = $this->MySQL->query($query);

		//Obtenemos el número total de resultados sin paginar:
		$calc_num_rows = mysql_query("SELECT FOUND_ROWS();");
		$array_num_rows = mysql_fetch_array($calc_num_rows);
		$this->num_rows = $array_num_rows[0];
					
	}
}
?>